// 使用字符串字面量而不是数字，以便更容易在调试器中检查事件

/**
 * 跟踪操作类型枚举，用于标识在响应式系统中对对象属性进行的操作类型
 */
export enum TrackOpTypes {
  GET = 'get', // 获取属性值
  HAS = 'has', // 检查属性是否存在
  ITERATE = 'iterate', // 遍历对象属性
}

/**
 * 触发操作类型枚举，用于标识在响应式系统中对对象属性进行的修改操作类型
 */
export enum TriggerOpTypes {
  SET = 'set', // 设置属性值
  ADD = 'add', // 添加新属性
  DELETE = 'delete', // 删除属性
  CLEAR = 'clear', // 清空对象属性
}

/**
 * 响应式标志枚举，用于标识响应式对象的特殊属性或状态
 */
export enum ReactiveFlags {
  SKIP = '__v_skip', // 跳过该对象的响应式处理
  IS_REACTIVE = '__v_isReactive', // 标识对象是否为响应式对象
  IS_READONLY = '__v_isReadonly', // 标识对象是否为只读响应式对象
  IS_SHALLOW = '__v_isShallow', // 标识对象是否为浅层响应式对象
  RAW = '__v_raw', // 获取对象的原始非响应式版本
  IS_REF = '__v_isRef', // 标识对象是否为 ref 对象
}